package de.bib.dashboard;

import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

/**
 * 
 * Kelas pembantu untuk mengakses system property yang didefine dengan argument
 * -D.<br>
 * Kelas ini adalah singleton karena hanya ada satu system properties.
 * 
 * @author "Jon Andika"
 * 
 */
public final class Prop {

	/**
	 * Instance singleton.
	 */
	private static Prop instance;

	private Properties properties = new Properties();

	/**
	 * Tidak bisa di construct dari luar.
	 */
	private Prop() {
	}

	/**
	 * Ambil instance.
	 * 
	 * @return singleton
	 */
	public static Prop getInstance() {
		if (instance == null) {
			instance = new Prop();
		}
		return instance;
	}

	/**
	 * Ambil sebuah nilai property yang didefine sebagai system property.
	 * 
	 * @param name
	 *            nama property seperti <code>com.andia.parameter</code>
	 * @return nilai property atau null jika property tidak ada.
	 */
	public String get(final String name) {
		return properties.getProperty(name);
	}

	/**
	 * Ambil sebuah nilai property yang didegine atau kembalikan default value
	 * yang diberikan.
	 * 
	 * @param name
	 *            nama property seperti <code>com.andia.cm.property</code>
	 * @param defaultValue
	 *            default value jika property tidak ada.
	 * @return nilai property atau default valye yang diberikan.
	 */
	public String get(final String name, final String defaultValue) {
		if (!properties.containsKey(name)) {
			return defaultValue;
		}
		return properties.getProperty(name);
	}

	public void load(InputStream filename) throws IOException {
		properties.load(filename);
	}

}
